package com.zyong.design.pattern.interpret.case2;

/**
 * 定义抽象表达式
 * @program: zyong-design-pattern
 * @ClassName: Expression
 * @author: zyong
 * @create: 2024-06-01 21:41
 */
public abstract class Expression {
    /**
     * 以环境为准，本方法解释给定的任何一个表达式
     * @param ctx
     * @return
     */
    public abstract boolean interpret(Context ctx);

    /**
     * 校验两个表达式在结构上是否相同
     * @param obj
     * @return
     */
    public abstract boolean equals(Object obj);

    /**
     * 返回表达式的hashcode
     * @return
     */
    public abstract int hashCode();

    /**
     * 将表达式转换成字符串
     * @return
     */
    public abstract String toString();
}
